From 2ef15e374057c85a375eee7f731df9e3f2750362 Mon Sep 17 00:00:00 2001 From: "kaf24@labyrinth.cl.cam.ac.uk" Date: Sun, 16 Feb 2003 10:25:43 +0000 Subject: [PATCH] bitkeeper revision 1.51 (3e4f67279oV-bmkkWw6EtRDc-swzow) time.c, dom0_core.c, defconfig, dev.c, domain.c: Minor cleanups. --- xen-2.4.16/arch/i386/time.c | 22 +-- xen-2.4.16/common/domain.c | 156 +++++++++--------- xen-2.4.16/net/dev.c | 2 +- xenolinux-2.4.16-sparse/arch/xeno/defconfig | 2 +- .../arch/xeno/drivers/dom0/dom0_core.c | 7 +- .../arch/xeno/kernel/time.c | 5 +- 6 files changed, 97 insertions(+), 97 deletions(-) diff --git a/xen-2.4.16/arch/i386/time.c b/xen-2.4.16/arch/i386/time.c index ef9417e88a..28803d2273 100644 --- a/xen-2.4.16/arch/i386/time.c +++ b/xen-2.4.16/arch/i386/time.c @@ -182,8 +182,8 @@ mktime (unsigned int year, unsigned int mon, } return ((((unsigned long)(year/4 - year/100 + year/400 + 367*mon/12 + day)+ year*365 - 719499 - )*24 + hour /* now have hours */ - )*60 + min /* now have minutes */ + )*24 + hour /* now have hours */ + )*60 + min /* now have minutes */ )*60 + sec; /* finally seconds */ } @@ -214,14 +214,14 @@ static unsigned long get_cmos_time(void) year = CMOS_READ(RTC_YEAR); } while (sec != CMOS_READ(RTC_SECONDS)); if (!(CMOS_READ(RTC_CONTROL) & RTC_DM_BINARY) || RTC_ALWAYS_BCD) - { + { BCD_TO_BIN(sec); BCD_TO_BIN(min); BCD_TO_BIN(hour); BCD_TO_BIN(day); BCD_TO_BIN(mon); BCD_TO_BIN(year); - } + } spin_unlock(&rtc_lock); if ((year += 1900) < 1970) year += 100; @@ -337,16 +337,15 @@ static void update_time(unsigned long foo) new_st = NOW(); rdtscl(new_pcc); - /* update system time */ + /* Update system time. */ spin_lock_irqsave(&stime_lock, flags); - stime_now = new_st; stime_pcc=new_pcc; + /* Don't reeenable IRQs until we release wctime_lock. */ + spin_unlock(&stime_lock); - spin_unlock_irqrestore(&stime_lock, flags); - - /* update wall clock time */ - spin_lock_irqsave(&wctime_lock, flags); + /* Update wall clock time. */ + spin_lock(&wctime_lock); usec = ((unsigned long)(new_st - wctime_st))/1000; usec += wall_clock_time.tv_usec; while (usec >= 1000000) { @@ -360,7 +359,8 @@ static void update_time(unsigned long foo) TRC(printk("TIME[%02d] update time: stime_now=%lld now=%lld,wct=%ld:%ld\n", smp_processor_id(), stime_now, new_st, wall_clock_time.tv_sec, wall_clock_time.tv_usec)); - /* reload timer */ + + /* Reload the timer. */ again: update_timer.expires = new_st + MILLISECS(200); if(add_ac_timer(&update_timer) == 1) { diff --git a/xen-2.4.16/common/domain.c b/xen-2.4.16/common/domain.c index 1488ff612c..311f7cc219 100644 --- a/xen-2.4.16/common/domain.c +++ b/xen-2.4.16/common/domain.c @@ -137,39 +137,6 @@ long kill_other_domain(unsigned int dom) } -/* Release resources belonging to task @p. */ -void release_task(struct task_struct *p) -{ - struct list_head *list_ent, *tmp; - ASSERT(p->state == TASK_DYING); - ASSERT(!p->has_cpu); - write_lock_irq(&tasklist_lock); - REMOVE_LINKS(p); - write_unlock_irq(&tasklist_lock); - - /* - * Safe! Only queue skbuffs with tasklist_lock held. - * Only access shared_info with tasklist_lock held. - * And free_task_struct() only releases if refcnt == 0. - */ - while ( p->num_net_vifs ) - { - destroy_net_vif(p); - } - if ( p->mm.perdomain_pt ) free_page((unsigned long)p->mm.perdomain_pt); - free_page((unsigned long)p->shared_info); - - list_for_each_safe(list_ent, tmp, &p->pg_head) - { - struct pfn_info *pf = list_entry(list_ent, struct pfn_info, list); - pf->type_count = pf->tot_count = pf->flags = 0; - list_del(list_ent); - list_add(list_ent, &free_list); - } - - free_task_struct(p); -} - unsigned int alloc_new_dom_mem(struct task_struct *p, unsigned int kbytes) { struct list_head *temp; @@ -206,6 +173,83 @@ unsigned int alloc_new_dom_mem(struct task_struct *p, unsigned int kbytes) return 0; } + +void free_all_dom_mem(struct task_struct *p) +{ + struct list_head *list_ent, *tmp; + + list_for_each_safe(list_ent, tmp, &p->pg_head) + { + struct pfn_info *pf = list_entry(list_ent, struct pfn_info, list); + pf->type_count = pf->tot_count = pf->flags = 0; + list_del(list_ent); + list_add(list_ent, &free_list); + } + + p->tot_pages = 0; +} + + +/* Release resources belonging to task @p. */ +void release_task(struct task_struct *p) +{ + ASSERT(p->state == TASK_DYING); + ASSERT(!p->has_cpu); + write_lock_irq(&tasklist_lock); + REMOVE_LINKS(p); + write_unlock_irq(&tasklist_lock); + + /* + * Safe! Only queue skbuffs with tasklist_lock held. + * Only access shared_info with tasklist_lock held. + * And free_task_struct() only releases if refcnt == 0. + */ + while ( p->num_net_vifs ) + { + destroy_net_vif(p); + } + if ( p->mm.perdomain_pt ) free_page((unsigned long)p->mm.perdomain_pt); + free_page((unsigned long)p->shared_info); + + free_all_dom_mem(p); + + free_task_struct(p); +} + + +void construct_cmdline(char *dst, struct task_struct *p) +{ + int dom = p->domain; + unsigned char boot[150]; + unsigned char ipbase[20], nfsserv[20], gateway[20], netmask[20]; + unsigned char nfsroot[70]; + + if ( strcmp("",opt_nfsroot) ) + { + /* NFS root for Xenolinux. */ + snprintf(nfsroot, 70, opt_nfsroot, dom); + snprintf(boot, 200, + " root=/dev/nfs ip=%s:%s:%s:%s::eth0:off nfsroot=%s", + quad_to_str(opt_ipbase + dom, ipbase), + quad_to_str(opt_nfsserv, nfsserv), + quad_to_str(opt_gateway, gateway), + quad_to_str(opt_netmask, netmask), + nfsroot); + } + else + { + /* Non-NFS root for Xenolinux. */ + snprintf(boot, 200, + " ip=%s::%s:%s::eth0:off", + quad_to_str(opt_ipbase + dom, ipbase), + quad_to_str(opt_gateway, gateway), + quad_to_str(opt_netmask, netmask)); + } + + strcpy(dst, boot); +} + + /* final_setup_guestos is used for final setup and launching of domains other * than domain 0. ie. the domains that are being built by the userspace dom0 * domain builder. @@ -311,21 +355,7 @@ int final_setup_guestos(struct task_struct * p, dom_meminfo_t * meminfo) } *dst = '\0'; - if ( opt_nfsroot ) - { - unsigned char boot[150]; - unsigned char ipbase[20], nfsserv[20], gateway[20], netmask[20]; - unsigned char nfsroot[70]; - snprintf(nfsroot, 70, opt_nfsroot, p->domain); - snprintf(boot, 200, - " root=/dev/nfs ip=%s:%s:%s:%s::eth0:off nfsroot=%s", - quad_to_str(opt_ipbase + p->domain, ipbase), - quad_to_str(opt_nfsserv, nfsserv), - quad_to_str(opt_gateway, gateway), - quad_to_str(opt_netmask, netmask), - nfsroot); - strcpy(dst, boot); - } + construct_cmdline(dst, p); /* Reinstate the caller's page tables. */ __asm__ __volatile__ ( @@ -404,7 +434,7 @@ int setup_guestos(struct task_struct *p, dom0_newdomain_t *params) dom, (mod[nr_mods-1].mod_end-mod[0].mod_start)>>20, (params->memory_kb)>>11, (params->memory_kb)>>10); - /* XXX should free domain memory here XXX */ + free_all_dom_mem(p); return -1; } @@ -578,34 +608,8 @@ int setup_guestos(struct task_struct *p, dom0_newdomain_t *params) } } *dst = '\0'; -//printk("opt_nfsroot=%d,%s XX cmd =: %s\n",opt_nfsroot,opt_nfsroot,virt_startinfo_address->cmd_line); - if ( strcmp("",opt_nfsroot) ) - { // if nfsroot has been set to something - unsigned char boot[150]; - unsigned char ipbase[20], nfsserv[20], gateway[20], netmask[20]; - unsigned char nfsroot[70]; - snprintf(nfsroot, 70, opt_nfsroot, dom); - snprintf(boot, 200, - " root=/dev/nfs ip=%s:%s:%s:%s::eth0:off nfsroot=%s", - quad_to_str(opt_ipbase + dom, ipbase), - quad_to_str(opt_nfsserv, nfsserv), - quad_to_str(opt_gateway, gateway), - quad_to_str(opt_netmask, netmask), - nfsroot); - strcpy(dst, boot); - } - else - { - unsigned char boot[150]; - unsigned char ipbase[20], nfsserv[20], gateway[20], netmask[20]; - snprintf(boot, 200, - " ip=%s::%s:%s::eth0:off", - quad_to_str(opt_ipbase + dom, ipbase), - quad_to_str(opt_gateway, gateway), - quad_to_str(opt_netmask, netmask)); - strcpy(dst, boot); - } + construct_cmdline(dst, p); /* Reinstate the caller's page tables. */ diff --git a/xen-2.4.16/net/dev.c b/xen-2.4.16/net/dev.c index 1ce6e9649e..1d024cb805 100644 --- a/xen-2.4.16/net/dev.c +++ b/xen-2.4.16/net/dev.c @@ -40,7 +40,7 @@ #define rtnl_unlock() ((void)0) #define dst_init() ((void)0) -#if 1 +#if 0 #define DPRINTK(_f, _a...) printk(_f , ## _a) #else #define DPRINTK(_f, _a...) ((void)0) diff --git a/xenolinux-2.4.16-sparse/arch/xeno/defconfig b/xenolinux-2.4.16-sparse/arch/xeno/defconfig index ee0a632e4d..ae0967ce64 100644 --- a/xenolinux-2.4.16-sparse/arch/xeno/defconfig +++ b/xenolinux-2.4.16-sparse/arch/xeno/defconfig @@ -113,7 +113,7 @@ CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_NBD=y CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_SIZE=4096 -CONFIG_BLK_DEV_INITRD=y +# CONFIG_BLK_DEV_INITRD is not set CONFIG_XENOLINUX_BLOCK=y # diff --git a/xenolinux-2.4.16-sparse/arch/xeno/drivers/dom0/dom0_core.c b/xenolinux-2.4.16-sparse/arch/xeno/drivers/dom0/dom0_core.c index 0cc35d9832..86ac7ebab5 100644 --- a/xenolinux-2.4.16-sparse/arch/xeno/drivers/dom0/dom0_core.c +++ b/xenolinux-2.4.16-sparse/arch/xeno/drivers/dom0/dom0_core.c @@ -212,11 +212,8 @@ static int cmd_write_proc(struct file *file, const char *buffer, } else if ( op.cmd == DO_PGUPDATES ) { - p = op.u.pgupdate.pgt_update_arr; - for ( i = 0; i < op.u.pgupdate.num_pgt_updates; i++ ) - { - ret = HYPERVISOR_pt_update(p + i*8, 1); - } + ret = HYPERVISOR_pt_update(op.u.pgupdate.pgt_update_arr, + op.u.pgupdate.num_pgt_updates); } else { diff --git a/xenolinux-2.4.16-sparse/arch/xeno/kernel/time.c b/xenolinux-2.4.16-sparse/arch/xeno/kernel/time.c index 4999af6642..eb5757cdc2 100644 --- a/xenolinux-2.4.16-sparse/arch/xeno/kernel/time.c +++ b/xenolinux-2.4.16-sparse/arch/xeno/kernel/time.c @@ -241,11 +241,11 @@ static inline void do_timer_interrupt(int irq, void *dev_id, { struct timeval tv; long long time, delta; - + #ifdef XENO_TIME_DEBUG static u32 foo_count = 0; foo_count++; - if (foo_count>= 10000) { + if (foo_count>= 1000) { s64 n = NOW(); struct timeval tv; do_gettimeofday(&tv); @@ -254,7 +254,6 @@ static inline void do_timer_interrupt(int irq, void *dev_id, foo_count = 0; } #endif - /* * The next bit really sucks: * Linux not only uses do_gettimeofday() to keep a notion of -- 2.30.2